package com.shuke.medical.insure.model.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * @author woo hua
 * @date 2023-03-31 15:21
 */
@Data
@NoArgsConstructor
@ApiModel(value="费用明细上传对象")
public class ChsPayDetailUploadDTO implements Serializable{

    /**
     * H44010401662
     */
    @ApiModelProperty("机构编码")
    @NotBlank(message = "机构编码不能为空")
    private String orgCodg;

    @ApiModelProperty("人员编号")
    @NotBlank(message = "人员编号不能为空")
    private String psnNo;
    @ApiModelProperty("险种类型")
    @NotBlank(message = "险种类型不能为空")
    private String insutype;
    @NotBlank(message = "医疗机构订单号不能为空")
    @ApiModelProperty("医疗机构订单号")
    private String medOrgOrd;

    @NotBlank(message = "开始时间不能为空")
    @ApiModelProperty("开始时间")
    private String begntime;
    @NotBlank(message = "证件号码不能为空")
    @ApiModelProperty("证件号码")
    private String idNo;
    @NotBlank(message = "用户姓名不能为空")
    @ApiModelProperty("用户姓名")
    private String userName;
    @NotBlank(message = "证件类别不能为空")
    @ApiModelProperty("证件类别")
    private String idType;

    @NotBlank(message = "就诊参保地行政区划不能为空")
    @ApiModelProperty("就诊参保地行政区划")
    private String insuCode;
    @NotBlank(message = "住院/门诊号不能为空")
    @ApiModelProperty("住院/门诊号")
    private String iptOtpNo;
    @NotBlank(message = "医师编码不能为空")
    @ApiModelProperty("医师编码")
    private String atddrNo;
    @NotBlank(message = "医师姓名不能为空")
    @ApiModelProperty("医师姓名")
    private String drName;
    @NotBlank(message = "科室编码不能为空")
    @ApiModelProperty("科室编码")
    private String deptCode;
    @NotBlank(message = "科室名称不能为空")
    @ApiModelProperty("科室名称")
    private String deptName;
    @NotBlank(message = "科别不能为空")
    @ApiModelProperty("科别")
    private String caty;
    //@ApiModelProperty("就诊ID")
    //private String mdtrtId;
    @NotBlank(message = "医疗类别不能为空")
    @ApiModelProperty("医疗类别")
    private String medType;
    @NotBlank(message = "费用类型不能为空")
    @ApiModelProperty("费用类型")
    private String feeType;
    @NotNull(message = "医疗费总额不能为空")
    @ApiModelProperty("医疗费总额")
    private BigDecimal medfeeSumamt;

    @NotBlank(message = "病种编码不能为空")
    @ApiModelProperty("病种编码")
    private String diseCodg;
    @NotBlank(message = "病种名称不能为空")
    @ApiModelProperty("病种名称")
    private String diseName;
    @NotBlank(message = "个人结算方式不能为空")
    @ApiModelProperty("个人结算方式")
    private String psnSetlway;
    @NotBlank(message = "收费批次号不能为空")
    @ApiModelProperty("收费批次号")
    private String chrgBchno;

    @ApiModelProperty("扩展参数,Json")
    private String expContent;
    @ApiModelProperty("诊断或症状明细")
    @NotEmpty(message = "诊断或症状明细不能为空")
    private List<@Valid ChsPayDetailDiseInfoDTO> diseinfoList;
    @ApiModelProperty("费用明细")
    @NotEmpty(message = "费用明细不能为空")
    private List<@Valid ChsPayDetailFeeDTO> feedetailList;
    @NotBlank(message = "支付授权码不能为空")
    @ApiModelProperty("支付授权码")
    private String payAuthNo;
    @NotBlank(message = "经纬度不能为空")
    @ApiModelProperty("经纬度")
    private String uldLatlnt;
    @NotBlank(message = "就诊凭证类型不能为空")
    @ApiModelProperty("就诊凭证类型")
    private String mdtrtCertType;
    @NotBlank(message = "用户参保地行政区划不能为空")
    @ApiModelProperty("用户参保地行政区划")
    private String insuplcAdmdvs;
}
